package performance.jmeter;

import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;

/**
 * Created by wangwy on 2017/1/4.
 */
public class JmeterInitSelectData extends AbstractJavaSamplerClient {
    // 这个方法是用来自定义java方法入参的。
    // params.addArgument("num1","");表示入参名字叫num1，默认值为空。
    //设置可用参数及的默认值；
    public Arguments getDefaultParameters() {
        Arguments params = new Arguments();
        params.addArgument("insertNum", "1000");
        params.addArgument("startId", "0");
        return params;
    }

    //每个线程测试前执行一次，做一些初始化工作；
    public void setupTest(JavaSamplerContext arg0) {
    }

    @Override
    public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
        int insertNum = javaSamplerContext.getIntParameter("insertNum");
        String startIdStr = javaSamplerContext.getParameter("startId");
        long startId = Integer.valueOf(startIdStr);
        SampleResult sr = new SampleResult();
        try {
            sr.setSampleLabel( "批量准备需要做select的数据");
            sr.sampleStart();// jmeter 开始统计响应时间标记
            // 通过下面的操作就可以将被测方法的响应输出到Jmeter的察看结果树中的响应数据里面了。
            TpsInitDataExecutor tpsInitDataExecutor = new TpsInitDataExecutor();
            tpsInitDataExecutor.doInitData(insertNum,startId);
            sr.setSuccessful(true);
            sr.setResponseMessage("success");
        } catch (Exception e) {
            sr.setSuccessful(false);
            sr.setResponseMessage("fail");
            throw new RuntimeException(e);
        } finally {
        sr.sampleEnd();// jmeter 结束统计响应时间标记
    }
        return sr;
    }

}
